<?php
if(isset($_GET['page'])){
    $page = intval($_GET['page']); // значение текущей страницы из GET
}    
$num = 10; // Кол-во записей выводимых на станице
if(!isset($page)){ 
    $page=1;   //значение по умолчанию
}

$mysql_result = Categories::categories_count(); //получение кол-ва записей в таблице 
if($mysql_result->fetchAll() > 0){
    $count = $mysql_result->rowCount();
    }
    
$post = $count; //кол-во всех записей
$total = intval(($post - 1) / $num) + 1; // Сколько нужно ярлыков?                           
$page = intval($page);

// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty($page) or $page < 0){
    $page = 1;
}
if($page > $total){ 
    $page = $total;
}

// Вычисляем начиная с какого номера
// следует выводить сообщения
$start = $page * $num - $num;
             
// Проверяем нужны ли стрелки "назад""
if ($page != 1){
     $pervpage = '<a href="/index.php?page=1">Первая</a>
     <a href="/index.php?page='. ($page - 1).'">Предыдущая</a> ';
}
// Проверяем нужны ли стрелки "вперед"
if ($page != $total){
    $nextpage = '  <a href="/index.php?page='. ($page + 1).'">Следующая</a>
    <a href="/index.php?page='.$total.'">Последняя</a> ';
}
// Находим две ближайшие страницы слева, если они есть
if($page - 2 > 0){
    $page2left = ' <a href="/index.php?page='. ($page - 2) .'">'. ($page - 2) .'</a>  '; 
}
if($page - 1 > 0){
    $page1left = '<a href="/index.php?page='. ($page - 1) .'">'. ($page - 1) .'</a>  ';   
}
// справа
if($page + 2 <= $total){
    $page2right = '  <a href="/index.php?page='. ($page + 2).'">'. ($page + 2) .'</a>'; 
}
if($page + 1 <= $total){
    $page1right = '  <a href="/index.php?page='. ($page + 1).'">'. ($page + 1) .'</a>';    
}
?>